package com.pay.service;

import com.pay.bo.NotifyMerchantBO;
import com.pay.entity.PayMerchantInfoDO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.concurrent.Future;

/**
 * 异步给微信的商户发送消息的service层
 * 异步给商户端发送微信模板提醒
 * 1.基于线程池实现异步
 * 2.基于MQ方式实现异步
 *
 * @author zhouyihe
 * @ClassName PayMessageTemplate
 */
public interface PayMessageTemplateService {
    /**
     * 通知给商户端支付结果(发送到用户的微信)
     *
     * @param merchantId     商户id
     * @param merchantOpenId 商户openid
     * @param paymentAmount  支付金额
     * @param payDate        支付时间
     * @param paymentChannel 支付渠道
     * @param paymentId      支付ID
     * @return
     */
    void notifyMerchantPaymentResultThread(NotifyMerchantBO notifyMerchantBO);

    /**
     * 基于MQ方式实现异步发送微信消息模板通知
     *
     * @param notifyMerchantBO
     */
    void notifyMerchantPaymentResultMQ(NotifyMerchantBO notifyMerchantBO);
    
    /**
     * 生产者批量投递消息到MQ中
     *
     * @param notifyMerchantBO
     */
    void notifyMerchantPaymentResultBatchMQ(NotifyMerchantBO notifyMerchantBO);
    
    /**
     * 通知给商户端新增用户结果(发送到用户的微信)
     *
     * @param payMerchantInfoDO
     * @return
     */
    void notifyMerchantSettlementThread(PayMerchantInfoDO payMerchantInfoDO);
}
